// 下载
// 导入
import Vue from 'vue'
import Vuex from 'vuex'
// import axios from 'axios'

// 导入模块对象
import userModule from './modules/user'
import cartModule from './modules/cart'

// 注册
Vue.use(Vuex)

// 总部
// 定义并导出
export default new Vuex.Store({
  // state: {
  //   goodsList: []
  // },
  // mutations: {
  //   setGoodsList(state, newList){
  //     state.goodsList = newList
  //   },
  //   // goods_state 
  //   // 设置 指定对象的状态，让它的状态与小选复选框的状态保持一致
  //   // mutations只能接受两个参数，第三个无效，由于这里需要传多个：
  //   // 一个下标，一个状态，所以第二个参数为一个对象
  //   // 对象中可以传入多个参数，obj{index:下标,checked:trtue/false}
  //   setGoodsItemState(state,obj) {
  //     state.goodsList[obj.index].goods_state = obj.checked
  //   },
  //   setGoodsListState(state,checked) {
  //     state.goodsList.forEach((obj) => obj.goods_state = checked)
  //   }
  // },
  // actions: {
  //   async asyncSetGoodsList(store) {
  //     // 1 发送ajax请求
  //     let res = await axios({
  //       method: 'GET',
  //       url: 'https://www.escook.cn/api/cart'
  //     })
  //     // res就是后台响应数据
  //     // console.log(res);

  //     // 2 后台响应数据 commit 到 setGoodsList mutations中
  //     store.commit('setGoodsList', res.data.list)
  //   }
  // },
  // // 计算属性 全局计算属性
  // getters: {
  //   // 总数量
  //   totalCount(state){
  //     return state.goodsList.reduce((sum, obj) => {
  //       if(obj.goods_state) {
  //         sum += obj.goods_count
  //       }
  //       return sum
  //     },0)
  //     // return
  //   },
  //   // 总价格
  //   totalPrice(state){
  //     return state.goodsList.reduce((sum, obj) => {
  //       if(obj.goods_state) {
  //         sum += obj.goods_count * obj.goods_price
  //       }
  //       return sum
  //     },0)
  //     // return
  //   },
  //   isAllChecked(state){
  //     // console.log(1);
  //     return state.goodsList.every(obj => obj.goods_state)
  //   }
  // },
  strict:true,
  //开启vuex的严格模式，修改state数据只能通过mutations,其他方式报错
  modules: {
    // 模块名:模块对象
    user: userModule,
    cart: cartModule
  }
})